Technical Field
The present disclosure relates to messaging frameworks for multiprocessor concurrency and, more specifically, to combining a message-based, non-blocking service with a thread-based, blocking service within a single coherent extended programming model.
Background Information
Traditionally, processor resource utilization may be improved by 1) balancing workloads to realize increased usage of available processor resources, and 2) minimizing code path lengths associated with the balanced workload, i.e., to complete an increased amount of work per central processing unit (CPU) cycle. However, these approaches typically work against each other because, e.g., caching effects occur when work is moved among processors in a multiprocessing system (or as multiple pieces of work executing concurrently in the multiprocessing system interact with one another), which slows down execution of code paths. In addition, the approaches also conflict because of the frequent use of locking, which reduces efficiency when an activity (e.g., a thread) is blocked either by spinning or relinquishing (giving up) a CPU resource at a significant context-switch cost. Thus, it is desirable to reduce blocking when performing multiprocessor load balancing to achieve greater efficiency.